package co.gov.medellin.sdep.sisdep.model;

import java.util.Date;

import co.gov.medellin.sdep.sisdep.admin.exception.ValueObjectException;
import co.gov.medellin.sdep.sisdep.admin.service.IValueObjectService;
import co.gov.medellin.sdep.sisdep.common.AppConstants;
import co.gov.medellin.sdep.sisdep.common.OracleHelper;
import co.gov.medellin.sdep.sisdep.common.SpringAppContext;


/**
 * <p>
 * Entidad que mapea con la tabla SISDEP.REG_CARNE_T.
 * </p>
 * <p>
 * Copyright (c) 2012<BR>
 * Consult-Soft S.A.<BR>
 * Created on: Apr 05, 2012<BR>
 * 
 * @author atabares
 * </p>
 */
public class Carne implements java.io.Serializable {
	
	/** Serial key. */
	private static final long serialVersionUID = 6278479467475707921L;

	/* Tipo_BD: java.lang.Long */
	private Long id;

	/* Tipo_BD: java.lang.String */
	private String codigo;

	/* Tipo_BD: java.lang.String */
	private String tipo;

	/* Tipo_BD: java.lang.Long */
	private Long idPersona;
	
	/** Numero de documento de identidad del Comerciante. */
	private String docPersona;

	/* Tipo_BD: java.lang.String */
	private String asociacion;

	/* Tipo_BD: java.lang.String */
	private String numero;

	/* Tipo_BD: java.lang.String */
	private String direccionVenta;

	/* Tipo_BD: java.lang.String */
	private String codigoBarrio;

	/* Tipo_BD: java.lang.String */
	private String barrio;

	/* Tipo_BD: java.lang.String */
	private String codigoComuna;

	/* Tipo_BD: java.lang.String */
	private String comuna;

	/* Tipo_BD: java.lang.String */
	private String horario;

	/* Tipo_BD: java.lang.Long */
	private Long idTipologia;
	
	/* Tipo_BD: java.lang.Long */
	private Long idTipoVenta;
	
	/* Tipo_BD: java.lang.Long */
	private Long idTipoAmoblamiento;
	
	/* Tipo_BD: java.util.Date */
	private Date fechaExpedicion;
	
	/* Tipo_BD: java.util.Date */
	private Date fechaTerminacion;

	/* Tipo_BD: java.lang.String */
	private String copia;

	/* Tipo_BD: java.util.Date */
	private Date fechaEntrega;

	/* Tipo_BD: java.lang.String */
	private String observacion;

	/* Tipo_BD: java.lang.String */
	private String estado;

	/* Tipo_BD: java.lang.String */
	private String usuarioCrea;

	/* Tipo_BD: java.util.Date */
	private Date fechaCrea;

	/* Tipo_BD: java.lang.String */
	private String usuarioModifica;

	/* Tipo_BD: java.util.Date */
	private Date fechaModifica;

	/**
	 * Obtiene el parametro id.
	 * @see Carne#id
	 *
	 * @return El parametro id.
	 */
	public Long getId() {
		return id;
	}
	
	/**
	 * Asigna el parametro id.
	 * @see Carne#id
	 *
	 * @param id valor a asignar al parametro id.
	 */
	public void setId(Long id) {
		this.id = id;
	}
	
	/**
	 * Obtiene el parametro codigo.
	 * @see Carne#codigo
	 *
	 * @return El parametro codigo.
	 */
	public String getCodigo() {
		return codigo;
	}
	
	/**
	 * Asigna el parametro codigo.
	 * @see Carne#codigo
	 *
	 * @param codigo valor a asignar al parametro codigo.
	 */
	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}
	
	/**
	 * Obtiene el parametro tipo.
	 * @see Carne#tipo
	 *
	 * @return El parametro tipo.
	 */
	public String getTipo() {
		return tipo;
	}
	
	/**
	 * Asigna el parametro tipo.
	 * @see Carne#tipo
	 *
	 * @param tipo valor a asignar al parametro tipo.
	 */
	public void setTipo(String tipo) {
		this.tipo = tipo;
	}
	
	/**
	 * Obtiene el parametro idPersona.
	 * @see Carne#idPersona
	 *
	 * @return El parametro idPersona.
	 */
	public Long getIdPersona() {
		return idPersona;
	}
	
	/**
	 * Asigna el parametro idPersona.
	 * @see Carne#idPersona
	 *
	 * @param idPersona valor a asignar al parametro idPersona.
	 */
	public void setIdPersona(Long idPersona) {
		this.idPersona = idPersona;
	}
	
	/**
	* Obtiene el parametro docPersona.
	* @see Carne#docPersona
	*
	* @return El parametro docPersona.
	*/
	public String getDocPersona() {
		return docPersona;
	}

	/**
	* Asigna el parametro docPersona.
	* @see Carne#docPersona
	*
	* @param docPersona valor a asignar al parametro docPersona.
	*/
	public void setDocPersona(String docPersona) {
		this.docPersona = docPersona;
	}

	/**
	 * Obtiene el parametro asociacion.
	 * @see Carne#asociacion
	 *
	 * @return El parametro asociacion.
	 */
	public String getAsociacion() {
		return asociacion;
	}
	
	/**
	 * Asigna el parametro asociacion.
	 * @see Carne#asociacion
	 *
	 * @param asociacion valor a asignar al parametro asociacion.
	 */
	public void setAsociacion(String asociacion) {
		this.asociacion = asociacion;
	}
	
	/**
	 * Obtiene el parametro numero.
	 * @see Carne#numero
	 *
	 * @return El parametro numero.
	 */
	public String getNumero() {
		return numero;
	}
	
	/**
	 * Asigna el parametro numero.
	 * @see Carne#numero
	 *
	 * @param numero valor a asignar al parametro numero.
	 */
	public void setNumero(String numero) {
		this.numero = numero;
	}
	
	/**
	 * Obtiene el parametro direccionVenta.
	 * @see Carne#direccionVenta
	 *
	 * @return El parametro direccionVenta.
	 */
	public String getDireccionVenta() {
		return direccionVenta;
	}
	
	/**
	 * Asigna el parametro direccionVenta.
	 * @see Carne#direccionVenta
	 *
	 * @param direccionVenta valor a asignar al parametro direccionVenta.
	 */
	public void setDireccionVenta(String direccionVenta) {
		this.direccionVenta = direccionVenta;
	}
	
	/**
	 * Obtiene el parametro codigoBarrio.
	 * @see Carne#codigoBarrio
	 *
	 * @return El parametro codigoBarrio.
	 */
	public String getCodigoBarrio() {
		return codigoBarrio;
	}
	
	/**
	 * Asigna el parametro codigoBarrio.
	 * @see Carne#codigoBarrio
	 *
	 * @param codigoBarrio valor a asignar al parametro codigoBarrio.
	 */
	public void setCodigoBarrio(String codigoBarrio) {
		this.codigoBarrio = codigoBarrio;
	}
	
	/**
	 * Obtiene el parametro barrio.
	 * @see Carne#barrio
	 *
	 * @return El parametro barrio.
	 */
	public String getBarrio() {
		return barrio;
	}
	
	/**
	 * Asigna el parametro barrio.
	 * @see Carne#barrio
	 *
	 * @param barrio valor a asignar al parametro barrio.
	 */
	public void setBarrio(String barrio) {
		this.barrio = barrio;
	}
	
	/**
	 * Obtiene el parametro codigoComuna.
	 * @see Carne#codigoComuna
	 *
	 * @return El parametro codigoComuna.
	 */
	public String getCodigoComuna() {
		return codigoComuna;
	}
	
	/**
	 * Asigna el parametro codigoComuna.
	 * @see Carne#codigoComuna
	 *
	 * @param codigoComuna valor a asignar al parametro codigoComuna.
	 */
	public void setCodigoComuna(String codigoComuna) {
		this.codigoComuna = codigoComuna;
	}
	
	/**
	 * Obtiene el parametro comuna.
	 * @see Carne#comuna
	 *
	 * @return El parametro comuna.
	 */
	public String getComuna() {
		return comuna;
	}
	
	/**
	 * Asigna el parametro comuna.
	 * @see Carne#comuna
	 *
	 * @param comuna valor a asignar al parametro comuna.
	 */
	public void setComuna(String comuna) {
		this.comuna = comuna;
	}
	
	/**
	 * Obtiene el parametro horario.
	 * @see Carne#horario
	 *
	 * @return El parametro horario.
	 */
	public String getHorario() {
		return horario;
	}
	
	/**
	 * Asigna el parametro horario.
	 * @see Carne#horario
	 *
	 * @param horario valor a asignar al parametro horario.
	 */
	public void setHorario(String horario) {
		this.horario = horario;
	}
	
	/**
	 * Obtiene el parametro idTipologia.
	 * @see Carne#idTipologia
	 *
	 * @return El parametro idTipologia.
	 */
	public Long getIdTipologia() {
		return idTipologia;
	}
	
	/**
	 * Asigna el parametro idTipologia.
	 * @see Carne#idTipologia
	 *
	 * @param idTipologia valor a asignar al parametro idTipologia.
	 */
	public void setIdTipologia(Long idTipologia) {
		this.idTipologia = idTipologia;
	}
	
	/**
	* Obtiene el parametro tipologia.
	* @see Carne#tipologia
	*
	* @return El parametro tipologia.
	 * @throws ValueObjectException 
	*/
	public String getTipologia() throws ValueObjectException {
		if (this.idTipologia != null) {
			return ((IValueObjectService) SpringAppContext.getBean(AppConstants.VALUE_OBJECT_SERVICE))
				.getTypeValue(this.idTipologia.toString()).getComponentValueName();
		}
		
		return AppConstants.EMPTY;
	}

	/**
	* Asigna el parametro tipologia.
	* @see Carne#tipologia
	*
	* @param tipologia valor a asignar al parametro tipologia.
	*/
	public void setTipologia(String tipologia) {
	}

	/**
	 * Obtiene el parametro idTipoVenta.
	 * @see Carne#idTipoVenta
	 *
	 * @return El parametro idTipoVenta.
	 */
	public Long getIdTipoVenta() {
		return idTipoVenta;
	}
	
	/**
	 * Asigna el parametro idTipoVenta.
	 * @see Carne#idTipoVenta
	 *
	 * @param idTipoVenta valor a asignar al parametro idTipoVenta.
	 */
	public void setIdTipoVenta(Long idTipoVenta) {
		this.idTipoVenta = idTipoVenta;
	}
	
	/**
	* Obtiene el parametro tipoVenta.
	* @see Carne#tipoVenta
	*
	* @return El parametro tipoVenta.
	 * @throws ValueObjectException 
	*/
	public String getTipoVenta() throws ValueObjectException {
		return ((IValueObjectService) SpringAppContext.getBean(AppConstants.VALUE_OBJECT_SERVICE))
				.getTypeValue(this.idTipoVenta.toString()).getComponentValueName();
	}

	/**
	* Asigna el parametro tipoVenta.
	* @see Carne#tipoVenta
	*
	* @param tipoVenta valor a asignar al parametro tipoVenta.
	*/
	public void setTipoVenta(String tipoVenta) {
	}

	/**
	 * Obtiene el parametro idTipoAmoblamiento.
	 * @see Carne#idTipoAmoblamiento
	 *
	 * @return El parametro idTipoAmoblamiento.
	 */
	public Long getIdTipoAmoblamiento() {
		return idTipoAmoblamiento;
	}
	
	/**
	 * Asigna el parametro idTipoAmoblamiento.
	 * @see Carne#idTipoAmoblamiento
	 *
	 * @param idTipoAmoblamiento valor a asignar al parametro idTipoAmoblamiento.
	 */
	public void setIdTipoAmoblamiento(Long idTipoAmoblamiento) {
		this.idTipoAmoblamiento = idTipoAmoblamiento;
	}
	
	/**
	* Obtiene el parametro tipoAmoblamiento.
	* @see Carne#tipoAmoblamiento
	*
	* @return El parametro tipoAmoblamiento.
	 * @throws ValueObjectException 
	*/
	public String getTipoAmoblamiento() throws ValueObjectException {
		return ((IValueObjectService) SpringAppContext.getBean(AppConstants.VALUE_OBJECT_SERVICE))
				.getTypeValue(this.idTipoAmoblamiento.toString()).getComponentValueName();
	}

	/**
	* Asigna el parametro tipoAmoblamiento.
	* @see Carne#tipoAmoblamiento
	*
	* @param tipoAmoblamiento valor a asignar al parametro tipoAmoblamiento.
	*/
	public void setTipoAmoblamiento(String tipoAmoblamiento) {
	}

	/**
	 * Obtiene el parametro fechaExpedicion.
	 * @see Carne#fechaExpedicion
	 *
	 * @return El parametro fechaExpedicion.
	 */
	public Date getFechaExpedicion() {
		return fechaExpedicion;
	}
	
	/**
	 * Asigna el parametro fechaExpedicion.
	 * @see Carne#fechaExpedicion
	 *
	 * @param fechaExpedicion valor a asignar al parametro fechaExpedicion.
	 */
	public void setFechaExpedicion(Date fechaExpedicion) {
		this.fechaExpedicion = fechaExpedicion;
	}
	
	/**
	* Obtiene el parametro fechaExpedicionFormated.
	* @see Carne#fechaExpedicionFormated
	*
	* @return El parametro fechaExpedicionFormated.
	*/
	public String getFechaExpedicionFormated() {
		return OracleHelper.date2string(fechaExpedicion);
	}

	/**
	* Asigna el parametro fechaExpedicionFormated.
	* @see Carne#fechaExpedicionFormated
	*
	* @param fechaExpedicionFormated valor a asignar al parametro fechaExpedicionFormated.
	*/
	public void setFechaExpedicionFormated(String fechaExpedicionFormated) {
	}

	/**
	* Obtiene el parametro fechaTerminacion.
	* @see Carne#fechaTerminacion
	*
	* @return El parametro fechaTerminacion.
	*/
	public Date getFechaTerminacion() {
		return fechaTerminacion;
	}

	/**
	* Asigna el parametro fechaTerminacion.
	* @see Carne#fechaTerminacion
	*
	* @param fechaTerminacion valor a asignar al parametro fechaTerminacion.
	*/
	public void setFechaTerminacion(Date fechaTerminacion) {
		this.fechaTerminacion = fechaTerminacion;
	}

	/**
	 * Obtiene el parametro copia.
	 * @see Carne#copia
	 *
	 * @return El parametro copia.
	 */
	public String getCopia() {
		return copia;
	}
	
	/**
	 * Asigna el parametro copia.
	 * @see Carne#copia
	 *
	 * @param copia valor a asignar al parametro copia.
	 */
	public void setCopia(String copia) {
		this.copia = copia;
	}
	
	/**
	* Obtiene el parametro fechaEntrega.
	* @see Carne#fechaEntrega
	*
	* @return El parametro fechaEntrega.
	*/
	public Date getFechaEntrega() {
		return fechaEntrega;
	}

	/**
	* Asigna el parametro fechaEntrega.
	* @see Carne#fechaEntrega
	*
	* @param fechaEntrega valor a asignar al parametro fechaEntrega.
	*/
	public void setFechaEntrega(Date fechaEntrega) {
		this.fechaEntrega = fechaEntrega;
	}

	/**
	 * Obtiene el parametro observacion.
	 * @see Carne#observacion
	 *
	 * @return El parametro observacion.
	 */
	public String getObservacion() {
		return observacion;
	}
	
	/**
	 * Asigna el parametro observacion.
	 * @see Carne#observacion
	 *
	 * @param observacion valor a asignar al parametro observacion.
	 */
	public void setObservacion(String observacion) {
		this.observacion = observacion;
	}
	
	/**
	 * Obtiene el parametro estado.
	 * @see Carne#estado
	 *
	 * @return El parametro estado.
	 */
	public String getEstado() {
		return estado;
	}
	
	/**
	 * Asigna el parametro estado.
	 * @see Carne#estado
	 *
	 * @param estado valor a asignar al parametro estado.
	 */
	public void setEstado(String estado) {
		this.estado = estado;
	}
	
	/**
	 * Obtiene el parametro usuarioCrea.
	 * @see Carne#usuarioCrea
	 *
	 * @return El parametro usuarioCrea.
	 */
	public String getUsuarioCrea() {
		return usuarioCrea;
	}
	
	/**
	 * Asigna el parametro usuarioCrea.
	 * @see Carne#usuarioCrea
	 *
	 * @param usuarioCrea valor a asignar al parametro usuarioCrea.
	 */
	public void setUsuarioCrea(String usuarioCrea) {
		this.usuarioCrea = usuarioCrea;
	}
	
	/**
	 * Obtiene el parametro fechaCrea.
	 * @see Carne#fechaCrea
	 *
	 * @return El parametro fechaCrea.
	 */
	public Date getFechaCrea() {
		return fechaCrea;
	}
	
	/**
	 * Asigna el parametro fechaCrea.
	 * @see Carne#fechaCrea
	 *
	 * @param fechaCrea valor a asignar al parametro fechaCrea.
	 */
	public void setFechaCrea(Date fechaCrea) {
		this.fechaCrea = fechaCrea;
	}
	
	/**
	 * Obtiene el parametro usuarioModifica.
	 * @see Carne#usuarioModifica
	 *
	 * @return El parametro usuarioModifica.
	 */
	public String getUsuarioModifica() {
		return usuarioModifica;
	}
	
	/**
	 * Asigna el parametro usuarioModifica.
	 * @see Carne#usuarioModifica
	 *
	 * @param usuarioModifica valor a asignar al parametro usuarioModifica.
	 */
	public void setUsuarioModifica(String usuarioModifica) {
		this.usuarioModifica = usuarioModifica;
	}
	
	/**
	 * Obtiene el parametro fechaModifica.
	 * @see Carne#fechaModifica
	 *
	 * @return El parametro fechaModifica.
	 */
	public Date getFechaModifica() {
		return fechaModifica;
	}
	
	/**
	 * Asigna el parametro fechaModifica.
	 * @see Carne#fechaModifica
	 *
	 * @param fechaModifica valor a asignar al parametro fechaModifica.
	 */
	public void setFechaModifica(Date fechaModifica) {
		this.fechaModifica = fechaModifica;
	}
}